var CertificationForm = (function($) {
	var s,
	settings = {
		wizard_form : $('.js-wizard'),
		step1 : $('#step1'),
		step2 : $('#step2'),
		step3 : $('#step3'),
		next : $('.js-next-step'),
		stepBtn : $('.js-goto'),
		uploadBtn : $('.js-photo-upload'),
		imgInput: $('.js-photo-input'),
		imgPreview: $('.js-photo-preview'),
		current : 1,
		isLoading: false
	};

	/**
	 * 初始化模块
	 */
	var fire = function() {
		s = settings;
		_wxConfig();
		_bindUIActions();
		console.log('CertificationForm Module Fire!');
	};

	/**
	 * 绑定UI交互事件
	 */
	var _bindUIActions = function() {
		s.next.on('click', function(event) {
			event.preventDefault();
			_gotoStep(s.current + 1);
		});

		s.stepBtn.on('click', function(event) {
			event.preventDefault();
			_gotoStep($(this).data('step'));
		});

		s.uploadBtn.on('click', function(event) {
			event.preventDefault();
			_wxUpload();
		});
	};

	/**
	 * 跳转步骤
	 */
	var _gotoStep = function(index) {
		if(index > 3 || index < 1) {
			return;
		}

		if(index > s.current) {
			if(index == 2 && !_validateFormStep(1)) {
				return;
			}
			if(index == 3 && !_validateFormStep(2)) {
				return;
			}
			if(index == 3 && s.current != 3 && _validateFormStep(2)) {
				_submitForm();
				return;
			}
		}
		if(s.current == 3) {
			return;
		}
		s.current += 1;
		$('#step' + index).addClass('is-active');
		$('#step' + index).siblings().removeClass('is-active');
		$('.wizard-progress > div').removeClass('is-active');
		$('.wizard-progress > div:nth-child(-n+' + index + ')').addClass('is-active');
		// window.mainScroll.refresh();
	};

	/**
	 * 提交表单
	 */
	var _submitForm = function() {
		swal({
			title: "确认提交",
			text: "提交后您的信息将无法修改。如果审核未通过，可以修改后再次提交。",
			showCancelButton: true,
			confirmButtonColor: "#00aaee",
			confirmButtonText: "提交审核",
			cancelButtonText: "修改",
			closeOnConfirm: false
		}, function() {
			s.wizard_form.submit();
		});
	};

	/**
	 * 验证表单分步
	 */
	var _validateFormStep = function(step) {

		var $fields = $('#step' + step + ' .js-required'),
			flag = 0;

		$fields.each(function(index, el) {
			if($(this).val() == '') {
				flag = 1;
			}
		});

		if(flag) {
			alert('你的信息填写不完整，请重新检查！');
			return false;
		}

		// 检查手机号
		var phoneNum = $('#step' + step + ' .js-phone').val();
		if( checkMobile(phoneNum) == false && phoneNum !== undefined ) {
			alert('手机号不正确，请重新输入！');
			return false;
		}

		// 检查Email
		var email = $('#step' + step + ' .js-email').val();
		if( checkEmail(email) == false && email !== undefined ) {
			alert('Email输入不正确，请重新输入！');
			return false;
		}

		return true;
	};

	/**
	 * 微信基础配置
	 */
	var _wxConfig = function() {
		$.ajax({
			url: '/weixin/ajax/getWeixinSign.ajax',
			type: 'POST',
			dataType: 'json',
			data: {url: location.href},
			success: function(respond) {
				wx.config({
					debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
					appId: respond.appId, // 必填，公众号的唯一标识
					timestamp: respond.timestamp, // 必填，生成签名的时间戳
					nonceStr: respond.nonceStr, // 必填，生成签名的随机串
					signature: respond.signature,// 必填，签名，见附录1
					jsApiList: ['chooseImage', 'uploadImage'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
				});
				s.isLoading = false;
			}
		});
	};

	/**
	 * 微信图片上传
	 * 
	 */
	var _wxUpload = function() {
		wx.chooseImage({
			count: 1, // 默认9
			sizeType: ['compressed'], // 可以指定是原图还是压缩图，默认二者都有
			sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
			success: function (res) {
				var localIds = res.localIds; // 返回选定照片的本地ID列表，localId可以作为img标签的src属性显示图片
				s.imgPreview.attr('src', localIds[0]);
				s.imgPreview.show();
				wx.uploadImage({
					localId: localIds[0], // 需要上传的图片的本地ID，由chooseImage接口获得
					isShowProgressTips: 1, // 默认为1，显示进度提示
					success: function (res) {
						var serverId = res.serverId; // 返回图片的服务器端ID
						s.imgInput.val(serverId);
					}
				});
			}
		});
	};

	return {
		fire: fire
	}
})(Zepto);